/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package asfabdesk.dominio;

import java.io.Serializable;
import java.util.Calendar;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.UniqueConstraint;

/**
 *
 * @author Marco Aurélio
 */
@Entity
@Table(name = "CONTRIBUICOES_MENSAIS", uniqueConstraints = {@UniqueConstraint(columnNames = {"periodo"})})
public class ContribuicaoMensal implements Serializable {

    @Id
    private Long id;
    @Column(name = "DESCONTO_FOLHA")
    private boolean descontoFolha; // verifica se a contribuição foi descontada em folha ou por deposito
    @Temporal(javax.persistence.TemporalType.DATE)
    private Calendar periodo; //referente ao mês do pagamento
    private double valor; // valor da contribuição
    @JoinColumn(name = "ASSOCIADOS", referencedColumnName = "id")
    @ManyToOne
    private Associado associado;
    @JoinColumn(name = "USUARIOS", referencedColumnName = "id")
    @ManyToOne
    private Usuario usuarioCadastrante; // funcionario ASFAB

    public ContribuicaoMensal() {
    }

    public ContribuicaoMensal(boolean descontoFolha, Calendar periodo, double valor, Associado associado, Usuario usuarioCadastrante) {
        this.descontoFolha = descontoFolha;
        this.periodo = periodo; 
        this.valor = valor;
        this.associado = associado;
        this.usuarioCadastrante = usuarioCadastrante;
    }

    public Associado getAssociado() {
        return associado;
    }

    public void setAssociado(Associado associado) {
        this.associado = associado;
    }

    public boolean isDescontoFolha() {
        return descontoFolha;
    }

    public void setDescontoFolha(boolean descontoFolha) {
        this.descontoFolha = descontoFolha;
    }

    public Calendar getPeriodo() {
        return periodo;
    }

    public void setPeriodo(Calendar periodo) {
        this.periodo = periodo;
    }

    public Usuario getUsuarioCadastrante() {
        return usuarioCadastrante;
    }

    public void setUsuarioCadastrante(Usuario usuarioCadastrante) {
        this.usuarioCadastrante = usuarioCadastrante;
    }

    public double getValor() {
        return valor;
    }

    public void setValor(double valor) {
        this.valor = valor;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }
}
